<?php
namespace app\home\controller;
use think\Log;

class Article extends Base
{
    public function __construct(){
        parent::__construct();
        //栏目列表
        $this->columnList();
        //热门文章
        $this->hotArticle();
    }
    /**
     *博客文章首页
     * @author wcy
     * @version 2017年7月4日10:38:29
     */
    public function index()
    {   //最新文章
        $this->nowArticle();
        //最新评论
        $this->nowCommit();
        //文章总数
        $this->conutArticle();
        //标签列表
        $this->labelList();
        //访问次数
        $this->access();
        return view("index");
    }
    /**
     *文章分类
     * @author wcy
     * @version 2017年7月4日10:38:29
     */
    public function typeArticle($type){
        //最新评论
        $this->nowCommit();
        //文章总数
        $this->conutArticle();
        //标签列表
        $this->labelList();
        //访问次数
        $this->access();
        $data=model("Article")->typeArticle($type);
        $page=$data->render();
        $this->assign("page",$page);
        $this->assign("thinkphp",$data);
        $this->assign("typename",$type);
        return view("typearticle");
    }
    /**
     *文章标签分类
     * @author wcy
     * @version 2017年7月4日10:38:29
     */
    public function labelArticle($label){
        //最新评论
        $this->nowCommit();
        //文章总数
        $this->conutArticle();
        //标签列表
        $this->labelList();
        //访问次数
        $this->access();
        $data=model("Article")->labelArticle($label);
        $page=$data->render();
        $this->assign("page",$page);
        $this->assign("thinkphp",$data);
        $this->assign("label_name",$label);
        return view("labelarticle");
    }
    /**
     *首页搜索
     * @author wcy
     * @version 2017年7月4日10:38:29
     */
    public function searchArticle($search){
        //最新评论
        $this->nowCommit();
        //文章总数
        $this->conutArticle();
        //标签列表
        $this->labelList();
        //访问次数
        $this->access();
        $data=model("Article")->searcehArticle($search);
        $page=$data->render();
        $searchedata=$data->toArray();
        $this->assign("page",$page);
        $this->assign("searchedata",$searchedata["data"]);
        $this->assign("search_name",$search);
        return view("searcharticle");
        $a=array("1"=>1,"2"=>3);
    }
    /**
     *最新文章
     * @author wcy
     * @version 2017年7月4日10:38:12
     */
    public function nowArticle(){
        try{
            $data=model("Article")->nowArticle();
            $page=$data->render();
            $this->assign("nowArticle",$data);
            $this->assign("page",$page);
        }catch (Exception $e){
            Log::record($e->getMessage());
        }
    }
    /**
     *文章的详情
     * @author wcy
     * @version 2017年7月4日14:42:01
     */
    public function detailed($id){
        //文章详情
        $this->getArticle($id);
        //添加阅读量
        $this->addArticleNumber($id);
        //文章评论
        $this->getComment($id);
        return view("detailed");
    }
    /**
     *获取文章
     * @author wcy
     * @version 2017年7月4日14:44:39
     */
    public function getArticle($id){
        try{
            $data=model("Article")->getArticle($id);
            $this->assign("article",$data);
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }
    /**
     *热门文章
     * @author wcy
     * @version 2017年7月4日15:56:40
     */
    public function hotArticle(){
        try{
            $data=model("Article")->hotArticle();
            $this->assign("hotarticle",$data);
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }
    /**
     *最新评论
     * @author wcy
     * @version 2017年7月4日16:21:05
     */
    public function nowCommit(){
        try{
            $data=model("comment")->nowCommit();
            $this->assign("comment",$data);
        }catch (Exception $e){
            Log::record($e->getMessage());
            return false;
        }
    }
    /**
     *添加阅读量
     * @author wcy
     * @version 2017年7月10日15:29:55
     */
    public function addArticleNumber($id){
        $number=rand(1,9);
        model("Article")->addArticleNumber($id,$number);
    }
    /**
     *文章总数
     * @author wcy
     * @version 2017年7月10日15:35:15
     */
    public function conutArticle(){
        $count=model("Article")->conutArticle();
        $this->assign("count",$count);
    }
    /**
     *栏目列表
     * @author wcy
     * @version 2017年7月10日15:35:15
     */
    public function columnList(){
        $data=model("Column")->columnList();
        $this->assign("columnList",$data);
    }
    /**
     *标签列表
     * @author wcy
     * @version 2017年7月13日10:17:19
     */
    public function labelList(){
        $data=model("Label")->labelList();
        $this->assign("labelList",$data);
    }
    /**
     * 添加评论
     * @author wcy
     * @version 2017年8月25日14:41:05
     */
    public function addComment(){
        try{
            $data["user_id"]=session("bloguser")["user_id"];
            $data["user_name"]=session("bloguser")["nick_name"];
            $data["user_img"]=session("bloguser")["user_img"];
            $data["article_id"]=$_POST["article_id"];
            $data["content"]=$_POST["content"];
            $data["add_time"]=date("Y-m-d H:i:s",time());
            $res=model("Comment")->addComment($data);
            if($res!==false){
                return json(["code"=>1,"msg"=>"评论成功"]);
            }else{
                return json(["code"=>-1,"msg"=>"评论失败"]);
            }
        }catch (Exception $e){
            Log::record($e->getMessage());
            return json(["code"=>-1,"msg"=>"评论失败"]);
        }
    }
    /**
     *添加评论
     * @author wcy
     * @version 2017年7月14日15:16:10
     */
    public function ZaddComment(){
        $data["article_id"]=input("post.article_id");
        $data["content"]=input("post.content");
        if(empty($data["article_id"])||empty($data["content"])){
            return json(["code"=>-1,"msg"=>"系统出错，请刷新页面"]);
        }
        $data["user_id"]=Session::get("bloguser")["user_id"];
        $data["user_name"]=Session::get("bloguser")["nick_name"];
        $data["user_img"]=Session::get("bloguser")["user_img"];
        $data["add_time"]=date("Y-m-d H:i:s");
        $res=model("Comment")->addComment($data);
        if($res!==false){
            return json(["code"=>1,"msg"=>"评论成功"]);
        }else{
            return json(["code"=>-1,"msg"=>"评论失败"]);
        }
    }
    /**
     * 获取文章评论
     * @author wcy
     * @version 2017年7月14日15:58:41
     */
    public function getComment($article_id){
        $data=model("Comment")->getComments($article_id);
        if(!empty($data)){
            foreach($data as $key=>$val){
                if(empty($val["p_id"])){
                    $datas[$val["id"]]=$val;
                }else{
                    $datas[$val["p_id"]]["data"][]=$val;
                }
            }
            $this->assign("commentData",$datas);
        }else{
            $this->assign("commentData",$data);
        }
    }
    /**
     * 回复评论
     * @author wcy
     * @version 2017年9月5日10:53:04
     */
    public function replyComment(){
        $id=$_POST["id"];
        if(empty($id)){
            return json(["code"=>-1,"msg"=>"评论失败"]);
        }
        $dataComment=model("Comment")->getComment($id);
        $data["p_id"]=$id;
        $data["reply_id"]=$dataComment["user_id"];
        $data["reply_name"]=$dataComment["user_name"];
        $data["article_id"]=$dataComment["article_id"];
        $data["content"]=$_POST["content"];
        $data["user_id"]=session("bloguser")["user_id"];
        $data["user_name"]=session("bloguser")["nick_name"];
        $data["user_img"]=session("bloguser")["user_img"];
        $data["add_time"]=date("Y-m-d H:i:s");
        $res=model("Comment")->addComment($data);
        if($res!==false){
            return json(["code"=>1,"msg"=>"评论成功"]);
        }else{
            return json(["code"=>-1,"msg"=>"评论失败"]);
        }
    }
    /**
     * 访问次数
     * @author wcy
     * @version 2017年7月20日14:49:45
     */
    public function access(){
        $data=model("Access")->getNumber();
        $this->assign("accessNum",$data["number"]);
    }
}
